const app = getApp()

Page({
    // 页面的初始数据
    data: {
        startDate: '', // 导出账单的开始日期
        endDate: '' // 导出账单的结束日期
    },

    // 生命周期函数--监听页面加载
    onLoad: function() {
        const today = new Date();
        const oneMonthAgo = new Date(today.getFullYear(), today.getMonth() - 1, today.getDate());

        // 设置默认的日期范围为过去一个月
        this.setData({
            startDate: this.formatDate(oneMonthAgo),
            endDate: this.formatDate(today)
        });
    },

    // 格式化日期为 YYYY-MM-DD 格式
    formatDate: function(date) {
        const year = date.getFullYear();
        const month = (date.getMonth() + 1).toString().padStart(2, '0');
        const day = date.getDate().toString().padStart(2, '0');
        return `${year}-${month}-${day}`;
    },

    // 处理开始日期变化
    onStartDateChange: function(e) {
        this.setData({
            startDate: e.detail.value
        });
    },

    // 处理结束日期变化
    onEndDateChange: function(e) {
        this.setData({
            endDate: e.detail.value
        });
    },

    // 导出账单
    exportBill: function() {
        const { startDate, endDate } = this.data;
        const records = wx.getStorageSync('records') || [];

        // 过滤出选定日期范围内的记录
        const filteredRecords = records.filter(record =>
            record.date >= startDate && record.date <= endDate
        );

        if (filteredRecords.length === 0) {
            wx.showToast({
                title: '所选时间段内没有记录',
                icon: 'none'
            });
            return;
        }

        // 生成 CSV 内容
        const csvContent = this.generateCSV(filteredRecords);
        // 上传 CSV 内容到云存储
        this.uploadToCloud(csvContent);
    },

    // 生成 CSV 内容
    generateCSV: function(records) {
        const header = '日期,类别,金额,备注\n';
        const rows = records.map(record =>
            `${record.date},${record.category},${record.amount},${record.remark}`
        ).join('\n');
        return header + rows;
    },

    // 上传文件到云存储
    uploadToCloud: function(content) {
        const fileName = `账单_${this.data.startDate}_${this.data.endDate}.csv`;
        const filePath = `${wx.env.USER_DATA_PATH}/${fileName}`;

        // 首先，将内容写入本地文件
        wx.getFileSystemManager().writeFileSync(
            filePath,
            content,
            'utf8'
        );

        wx.cloud.uploadFile({
            cloudPath: fileName,
            filePath: filePath,
            success: res => {
                console.log('上传成功', res);
                this.getFileUrl(res.fileID);
            },
            fail: err => {
                console.error('上传失败', err);
                wx.showToast({
                    title: '导出失败',
                    icon: 'none'
                });
            }
        });
    },

    // 获取文件下载链接
    getFileUrl: function(fileID) {
        wx.cloud.getTempFileURL({
            fileList: [fileID],
            success: res => {
                console.log('getTempFileURL response:', res);
                if (res.fileList && res.fileList.length > 0 && res.fileList[0].tempFileURL) {
                    const tempFileURL = res.fileList[0].tempFileURL;
                    console.log('文件下载链接', tempFileURL);
                    wx.showModal({
                        title: '导出成功',
                        content: '文件已上传到云端，点击确定复制下载链接',
                        success: (modalRes) => {
                            if (modalRes.confirm) {
                                wx.setClipboardData({
                                    data: tempFileURL,
                                    success: () => {
                                        wx.showToast({
                                            title: '链接已复制',
                                            icon: 'success'
                                        });
                                    },
                                    fail: (clipboardErr) => {
                                        console.error('复制到剪贴板失败', clipboardErr);
                                        wx.showToast({
                                            title: '复制链接失败',
                                            icon: 'none'
                                        });
                                    }
                                });
                            }
                        }
                    });
                } else {
                    console.error('获取文件链接失败: 无效的响应结构', res);
                    wx.showToast({
                        title: '获取下载链接失败',
                        icon: 'none'
                    });
                }
            },
            fail: err => {
                console.error('获取文件链接失败', err);
                wx.showToast({
                    title: '获取下载链接失败',
                    icon: 'none'
                });
            }
        });
    }
});